#2.写函数，接收n个数字，求这些参数数字的和。（动态传参）
'''
def hanshu(*args):
    sum = 0
    for i in args:
        sum += i
    return sum
print(hanshu(234))
'''

#3.读代码，回答：代码中,打印出来的值a,b,c分别是什么？为什么？
'''
a = 10
b = 20
def test5(a,b):
    print(a,b)  #a等于20，b等于10，c = test5(b,a)传的值为test5(20,10)
c = test5(b,a)
print(c)        #None
#20  10  None
'''

#4.读代码，回答：代码中,打印出来的值a,b,c分别是什么？为什么？
'''
a=10
b=20
def test5(a,b):
   a=3
   b=5
   print(a,b)   #因为局部有a,b的值，就不需要在用外面的值，所打印出来a=3,b=5
c = test5(b,a)
print(c)        #没有返回值，所以为空None
'''

# 5.传入函数中多个列表和字典,如何将每个列表的每个元素依次添加到函数的动态参数args里面？
# 如何将每个字典的所有键值对依次添加到kwargs里面？
'''
def hanshu(*args,**kwargs):
    print(args)
    print(kwargs)

lst = [1,2,3,4,5]
dic = {'k':'1','k1':'2'}
hanshu(*lst,**dic)
'''

#6.下面代码成立么?如果不成立为什么报错?怎么解决?
#6.1
'''
a = 2
def wrapper():
    print(a)
wrapper()   #成立
'''
#6.2
'''
a = 2
def wrapper():
    a += 1          #不成立，修改全局变量
    print(a)        #global修改全局变量
wrapper()
'''
#6.3
'''
def wrapper():
    a = 1
    def inner():    #成立
        print(a)
    inner()
wrapper()
'''
# 6.4
'''
def wrapper():
    a = 1
    def inner():            #不成立，修改变量
        a += 1              #nonlocal修改局部变量
        print(a)
    inner()
wrapper()
'''

# 7.写函数,接收两个列表,将列表长度比较小的列表返回.
'''
def hanshu(a,b):
    if len(a) > len(b):
        return b
    else:
        return a
lst = [1,2,3,4]
lst1 = [1,2,3,4,5]
print(hanshu(lst,lst1))
'''

# 8.写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.
# 例如 传入的可迭代对象为[1,'老男孩','宝元']返回的结果为’1_老男孩_宝元’
'''
def hanshu(a):
    lst = []
    for i in a:
        lst.append(str(i))
    return '_'.join(lst)

print(hanshu([1,'顶风尿','百丈']))
'''

# 9.有如下函数:
'''
def wrapper():
    def inner():
        print(666)
    inner()
wrapper()
'''
# 你可以任意添加代码,执行inner函数.

# 10.补充代码,可以使以下的代码可以运行
'''
a = 10
def func():
    global a
    a += 1
    print(a)
func()
'''
